﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.Linq;
using tea.BL;
using tea.DB;
using tea.Models;

namespace skhukb.Controllers
{
    [Authorize]
    public class CommentController : Controller
    {
        [Util.AjaxOnly]
        [HttpPost]
        public ActionResult List(CommentListModel 모델)
        {
            using (var db = new DBDataContext()) {
                모델.목록 = db.덧글.Where(p => p.대상ID == 모델.대상ID && p.대상구분 == 모델.대상구분).Select(p => new 덧글Model(p)).ToList();
                foreach (var n in 모델.목록) n.수정권한 = 덧글수정권한(n);
                return PartialView("_List", 모델);
            }
        }

        [Util.AjaxOnly]
        [HttpPost]
        [ValidateInput(false)]
        public ActionResult Save(CommentEditModel 모델)
        {
            if (String.IsNullOrEmpty(모델.내용)) return Json(Consts.Ajax내용오류);
            using (var db = new DBDataContext()) {
                if (모델.덧글ID == 0) {
                    var 새덧글 = new 덧글 { IP = Request.UserHostAddress, 내용 = 모델.내용, 사용자ID = BL사용자.현재사용자.ID, 생성일 = DateTime.Now, 대상ID = 모델.대상ID, 대상구분 = 모델.대상구분 };
                    db.덧글.InsertOnSubmit(새덧글);
                } else {
                    var n = db.덧글.FirstOrDefault(p => p.ID == 모델.덧글ID);
                    if (n == null) return Json(Consts.Ajax작업실패);
                    if (덧글수정권한(n) == false) return Json(Consts.Ajax권한없음);
                    n.내용 = 모델.내용;
                }
                db.SubmitChanges();
                return Json(new AjaxSuccessModel());
            }
        }

        private bool 덧글수정권한(덧글 덧글)
        {
            return 덧글.사용자ID == BL사용자.현재사용자.ID || BL사용자.IsAdmin();
        }

        [Util.AjaxOnly]
        [HttpPost]
        public ActionResult Delete(long ID)
        {
            using (var db = new DBDataContext()) {
                var n = db.덧글.FirstOrDefault(p => p.ID == ID);
                if (덧글수정권한(n) == false) return Json(Consts.Ajax권한없음);
                if (n != null) {
                    db.덧글.DeleteOnSubmit(n);
                    db.SubmitChanges();
                }
                return Json(new AjaxSuccessModel());
            }
        }

    }
}